#pragma once

class IGameState;
class IRender;
class ICamera;


/**
================================
A GameStateView is the visual representation
of a current gamestate, there may be multiple
gamestates active at once, eg. Console and IngameState
================================
*/
class IGameStateView
{
public:
    IGameStateView(IGameState* state) { m_id = 0; m_active = false; m_state = state; };

    /** Register the state that goes with this view */
    virtual void RegisterState( IGameState* g ) { m_state = g; };
    /** Render this view */
    virtual void Render( IRender *r, ICamera* cam )=0;
    
    /** Set the id */
    void SetID( int i ) { m_id = i; };
    /** Get the ID */
    int  GetID() { return m_id; };

    /** Make this an active view */
    void SetActive(bool b) { m_active = b; };
    /** Test activity */
    bool IsActive() { return m_active; };

private:
    int     m_id;
    bool    m_active;

protected:
    // state representation
    IGameState*     m_state;

};